package services

import (
	"github.com/labstack/gommon/log"
	"law_case_api/dto"
	"law_case_api/models"
)

// CreateCaseDoc 创建案件文档信息
func (_case CaseService) CreateCaseDoc(wzjCaseDoc models.WzjCaseDoc) (bool, error) {
	if err := db.Create(&wzjCaseDoc).Error; err != nil {
		log.Error("CreateCaseDoc--创建案件文档信息失败,失败原因：", err)
		return false, err
	}
	return true, nil
}

// UpdateCaseDoc 更新案件文档信息
func (_case CaseService) UpdateCaseDoc(wzjCaseDoc models.WzjCaseDoc) (bool, error) {
	if err := db.Where("id=?", wzjCaseDoc.DocId).
		Select("doc_id,file_id,case_id,doc_type,doc_name,doc_create_date,doc_create_user,doc_create_user_id").
		Updates(&wzjCaseDoc).Error; err != nil {
		log.Error("UpdateCaseDoc--更新案件文档信息,失败原因：", err)
		return false, err
	}
	return true, nil
}

// GetCaseDocById 根据案件文档id获取案件文档信息详情
func (_case CaseService) GetCaseDocById(caseId int) (models.WzjCaseDoc, error) {
	wzjCaseDoc := models.WzjCaseDoc{}
	if err := db.Where("id=?", caseId).Limit(1).Find(&wzjCaseDoc).Error; err != nil {
		log.Error("GetContractById--查询失败,失败原因：", err)
		return wzjCaseDoc, err
	}
	return wzjCaseDoc, nil
}

// GetCaseDocListByCondition 根据登录人信息获取案件文档信息列表
func (_case CaseService) GetCaseDocListByCondition(userId int, caseDocListReq dto.CaseDocListReq) ([]dto.CaseDocReq, int64, error) {
	var list []dto.CaseDocReq
	sql := `SELECT a.doc_id,a.file_id,a.case_id,a.doc_type,b.file_name doc_name,a.doc_create_date,a.doc_create_user,a.doc_create_user_id,b.file_path,b.file_name
	FROM wzj_db.wzj_case_doc a 
	INNER JOIN wzj_db.wzj_file b ON a.file_id = b.id
	WHERE a.case_id=? ORDER BY a.doc_create_date DESC;`
	if err := db.Raw(sql, caseDocListReq.CaseId).Find(&list).Error; err != nil {
		log.Error("GetCaseDocListByCreateUserId--查询失败,失败原因：", err)
		return list, 0, err
	}
	return list, 0, nil
}
